#define  _CRT_SECURE_NO_WARNINGS 1

#include "list.hpp"

int main()
{
	lw::list<int> lt{ 1, 2, 3, 4, 5 };
	for (const auto& e : lt)
		std::cout << e << "  ";
	std::cout << std::endl;

	lt.push_front(100);
	for (const auto& e : lt)
		std::cout << e << "  ";
	std::cout << std::endl;

	auto it = lt.rbegin();
	while (it != lt.rend())
	{
		std::cout << *it << "  ";
		++it;
	}

	return 0;
}






//#include "SeqList.h"
//#include "Slist.h"
//#include "List.h"

//int main()
//{
//	SL s;
//	SLInit(&s);
//	SLPushBack(&s, 1);
//	SLPrint(&s);
//
//	SLPushBack(&s, 2);
//	SLPrint(&s);
//
//	SLPushBack(&s, 3);
//	SLPrint(&s);
//
//	SLPushFront(&s, 10);
//	SLPrint(&s);
//
//	SLPushFront(&s, 100);
//	SLPrint(&s);
//
//	SLPopBack(&s);
//	SLPrint(&s);
//
//	SLPopFront(&s);
//	SLPrint(&s);
//
//	SLInsert(&s, 2, 20);
//	SLPrint(&s);
//
//	SLErase(&s, 1);
//	SLPrint(&s);
//
//	return 0;
//}

//int main()
//{
//	SListNode* sl = NULL;
//	SListPrint(sl);
//
//	SListPushBack(&sl, 1);
//	SListPushBack(&sl, 2);
//	SListPushBack(&sl, 3);
//	SListPrint(sl);
//
//	SListPushFront(&sl, 10);
//	SListPushFront(&sl, 101);
//	SListPushFront(&sl, 1000);
//	SListPrint(sl);
//
//	SListPopBack(&sl);
//	SListPopBack(&sl);
//	SListPopBack(&sl);
//	SListPopBack(&sl);
//	SListPrint(sl);
//
//	SListNode* pos = SListFind(sl, 1000);
//	if (pos)
//	{
//		SListErase(&sl, pos);
//		SListPrint(sl);
//	}
//
//	//SListPopFront(&sl);
//	//SListPopFront(&sl);
//	//SListPopFront(&sl);
//	//SListPrint(sl);
//
//	return 0;
//}

//int main()
//{
//	ListNode* lt = ListInit();
//	ListPushBack(lt, 1);
//	ListPushBack(lt, 2);
//	ListPushBack(lt, 3);
//	ListPrint(lt);
//
//	ListPushFront(lt, 10);
//	ListPushFront(lt, 100);
//	ListPrint(lt);
//
//	ListPopBack(lt);
//	ListPopBack(lt);
//	ListPrint(lt);
//
//	ListPopFront(lt);
//	ListPrint(lt);
//
//
//	return 0;
//}

//#include <iostream>
//#include "string.hpp"
//namespace lw
//{
//	string to_string(int val)
//	{
//		string str = "12346";
//		// ......
//
//		return str;
//	}
//}
//
//int main()
//{
//	lw::string ans = lw::to_string(12345);
//	return 0;
//}

//#include <iostream>
//#include "string.hpp"
//
//int main()
//{
//	//lw::string s;
//	//std::cout << s << std::endl;
//	//s += "hello world";
//	//std::cout << s << std::endl;
//	//s += 'a';
//	//std::cout << s << std::endl;
//	//std::cout << s.size() << "    " << s.capacity() << std::endl;
//
//	//lw::string tmp(s);
//	//std::cout << tmp << std::endl;
//
//	//lw::string a;
//	//std::cin >> a;
//	//std:: cout << a << std::endl;
//
//	//a.insert(0, "12345");
//	//std::cout << a << std::endl;
//
//	lw::string s("hello world");
//
//	s.insert(3, "123");
//	std::cout << s << std::endl;
//
//	s.insert(0, 'a');
//	std::cout << s << std::endl;
//
//	s.erase(2, 10);
//	std::cout << s << std::endl;
//
//	s.erase(0, 1);
//	std::cout << s << std::endl;
//
//	return 0;
//}

//#include "vector.hpp"
//
//int main()
//{
//	lw::vector<int> v;
//	v.push_back(1);
//	v.push_back(2);
//	v.push_back(3);
//	v.push_back(4);
//	v.resize(10, 34);
//	for (const auto& e : v)
//		std::cout << e << "  ";
//	std::cout << std::endl;
//
//	v.erase(v.begin() + 3);
//	v.insert(v.begin() + 2, 10);
//	for (const auto& e : v)
//		std::cout << e << "  ";
//	std::cout << std::endl;
//	return 0;
//}

//#include "stack.hpp"
//
//int main()
//{
//	lw::stack<int> st;
//	st.push(1);
//	st.push(2);
//	st.push(3);
//	st.push(4);
//	while (!st.empty())
//	{
//		std::cout << st.top() << "  ";
//		st.pop();
//	}
//	return 0;
//}
//#include <list>
//#include "queue.hpp"
//
//int main()
//{
//	//lw::queue<int, std:: list<int >> q;
//	//q.push(1);
//	//q.push(2);
//	//q.push(3);
//	//q.push(4);
//	//q.push(5);
//	//while (q.size())
//	//{
//	//	std::cout << q.front() << "  ";
//	//	q.pop();
//	//}
//	
//	lw::priority_queue<int, std::vector<int>, std::greater<int>> heap = { 1, 2, 4, 54, 3, 7, 19 };
//	while (heap.size())
//	{
//		std::cout << heap.top() << "  ";
//		heap.pop();
//	}
//	
//	return 0;
//}